package com.cmonbaby.adapter.recycleview;

import com.cmonbaby.adapter.recycleview.base.RItem;

import java.util.List;

/**
 * RecycleView常用适配器
 * @author simon 2016-9-19 上午11:05:29
 * @since JDK1.8 SDK6.0.1
 * @version V2.3.4
 * @param <T>
 */
public abstract class RCommonAdapter<T> extends RMultiItemTypeAdapter<T> {

    // 抽象方法，必实现，需将传入参数赋值到上面方法
    protected abstract void convert(RViewHolder holder, T t, int position);

    /**
     * 构造方法，为父类传参
     * @param layoutId 布局ID
     * @param datas 数据源
     */
    protected RCommonAdapter(final int layoutId, List<T> datas) {
        super(datas);

        // 增加所有item条目授权管理
        addItemViewStyles(new RItem<T>() { // 实现单一布局item条目接口，赋值
            // 获取item条目布局ID
            @Override
            public int getItemViewLayoutId() {
                return layoutId;
            }

            // 是否为当前item条目布局类型
            @Override
            public boolean isForViewType(T item, int position) {
                return true;
            }

            // 将Activity实现的显示数据传入赋值给item条目
            @Override
            public void convert(RViewHolder holder, T t, int position) {
                RCommonAdapter.this.convert(holder, t, position);
            }
        });
    }
}